home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / bbsutil / ghost230.zip / GHOST.DOC < prev    next >
Text File  |  1990-11-01  |  72KB  |  1,872 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.                              Ghostwriter [2.1]
  9.  
  10.  
  11.  
  12.      Purpose of this program ......................................  2
  13.      Configuration ................................................  2
  14.      Ghost hello! .................................................  3
  15.      How to use the program .......................................  4
  16.      QuickBBS specific assumptions ................................  5
  17.      Ondate option ................................................  6
  18.      Onday option .................................................  7
  19.      Performing mail check ........................................  7
  20.      How to use the "cosysop" .....................................  9
  21.      Shelling to DOS ..............................................  9
  22.      Server requests .............................................. 12
  23.      How to use the "trigger" ..................................... 13
  24.      Predefined variables ......................................... 14
  25.      Message flags ................................................ 15
  26.      Inter-zone messages: #define zonegate ........................ 16
  27.      National customization: #define country ...................... 17
  28.      Addressees list: #define group ............................... 18
  29.      User-defined variable: the -d option ......................... 19
  30.      Alternate configuration file: the -f option .................. 20
  31.      Generate kludge lines: the -k option ......................... 20
  32.      Use other sysop name: the -n option .......................... 20
  33.      No word wrap: the -s option .................................. 21
  34.      No tear line: the -t option .................................. 21
  35.      Tear line and origin line .................................... 21
  36.      File attaches ................................................ 21
  37.      File requests ................................................ 22
  38.      Magic filenames .............................................. 23
  39.      File compression method ...................................... 23
  40.      Override magic filenames ..................................... 24
  41.      Optional kludge lines ........................................ 24
  42.      Errorlevels returned ......................................... 24
  43.      Credits, new releases and "Thank you" ........................ 26
  44.      Index ........................................................ 28
  45.  
  46.  
  47.  
  48.  
  49.  
  50.      _________________________________________ Purpose of this program
  51.  
  52.      The ghostwriter can be used to automatically create messages to
  53.      one or more addressee(s) in different kinds: local, echo, matrix,
  54.      file attach or file request. Another important function of the
  55.      program is to scan message areas for messages not received by the
  56.      sysop and to generate replies and forwarded messages. Last but
  57.      not least it can be used as a powerful batch processor containing
  58.      all required variables for Nodelist and other day-dependent file
  59.      processing. These batch files even may be created from netmail
  60.      messages addressed to a special "pseudo" user.
  61.  
  62.           The program supports the generic message format used world-
  63.      wide in FidoNet. The QuickBBS message format, originally designed
  64.      by Adam Hudson, currently used by QuickBBS, FrontDoor/TosScan and
  65.      RemoteAccess, also fully is supported.
  66.  
  67.           Users of BinkleyTerm, FrontDoor or RemoteAccess will need no
  68.      configuration parameters. You can use this utility in connection
  69.      with any mailer and editor of your choice assumed your software
  70.      uses the netmail message header structure as defined in various
  71.      FSC and FTS documents.
  72.  
  73.           Of course the program is zone- and point-smart. The proper
  74.      ^aINTL, ^aFMPT and ^aTOPT kludges will be included in the netmail
  75.      message header if neccessary. Mailer specific additional message
  76.      flags easily can be used.
  77.  
  78.           The command "ghost > ghost.cfg" creates a simple config-
  79.      uration file as required by the program. Edit this file to suit
  80.      your needs; see the included Sample.Cfg for more details.
  81.  
  82.  
  83.      ___________________________________________________ Configuration
  84.  
  85.      There is very little configuration required to get the program up
  86.      and running. If you use BinkleyTerm 2.30, FrontDoor or Remote-
  87.      Access the only operating parameters required are "to [name] [ad-
  88.      dress] {flags}" and "path" lines in Ghost.Cfg.
  89.  
  90.           The program tries to locate Binkley.Cfg, Fd.Sys or Config.Ra
  91.      first in the current subdirectory. If this attempt failed the DOS
  92.      environment is searched for "set BINKLEY=d:\subdir", "set FD=
  93.      d:\subdir" or "set RA=d:\subdir". If neither Binkley.Cfg nor
  94.      Fd.Sys or Config.Ra could be found put Ghost.Exe and Ghost.Cfg in
  95.      the same subdirectory as BinkleyTerm, FrontDoor or RemoteAccess.
  96.  
  97.           You use another mailer? In this case the parameters "sysop",
  98.      "address" and "netmail" are required in Ghost.Cfg. The "system"
  99.      parameter is optional: if an ASCII file named "Origin" is located
  100.      in the subdirectory where the new message(s) will be created it
  101.      is used for the origin lines. The other optional keywords
  102.      "nodelist" and "okfile" will enhance the program's possibilities
  103.      on your system.
  104.  
  105.  
  106.  
  107.      Ghostwriter [2.1]                                          page 2
  108.  
  109.  
  110.  
  111.  
  112.  
  113.           To avoid data redundancy the matrix address in any "to
  114.      [name] [address] {flags}" line may be omitted if a file named
  115.      Fidouser.Lst is existing in the same subdirectory as stated in
  116.      the line "nodelist". The format of the Fidouser.Lst is very
  117.      simple: last name, first name [1..n blanks] [zone:]net/node.
  118.  
  119.           Various nodelist compilers (for example Bob Hartman's
  120.      ParseLst) optionally create this file while translating the
  121.      nodelist into the binary format used by the mailer software.
  122.      Since there is no message flag field in the Fidouser.Lst-like
  123.      file these messages always will have the "private" flag set.
  124.  
  125.           However: you should be aware of the fact that the program's
  126.      execution time due to the required disk access considerable
  127.      gains, especially if you process large #group lists. In the
  128.      current version the search time required to locate the very last
  129.      line in Fidouser.Lst is about five seconds (6 Mhz IBM XT 286
  130.      w/287, 512 kb EMS disk cache).
  131.  
  132.  
  133.      ____________________________________________________ Ghost hello!
  134.  
  135.      To verify the program has detected correct configuration use the
  136.      special command line parameter "hello!". If all required
  137.      parameters ("sysop", "address", "netmail" and optionally "sys-
  138.      tem", "nodelist" and "okfile") could be found in Ghost.Cfg,
  139.      Binkley.Cfg, Fd.Sys or Config.Ra this data will be displayed in a
  140.      window on the screen. If Binkley.Cfg, Fd.Sys or Config.Ra could
  141.      be located the file Ghost.Cfg is not required for the "hello!"
  142.      option.
  143.  
  144.           Also a "Hello and thank you!"-message to myself will be
  145.      generated in your netmail directory. If you think this is
  146.      annoying simply delete this message; otherwise allow your system
  147.      to export this message during the next netmail export event. Your
  148.      name and network address will be added to the user list of the
  149.      program. You will be notified of new program releases as soon as
  150.      they are available.
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.      Ghostwriter [2.1]                                          page 3
  171.  
  172.  
  173.  
  174.  
  175.  
  176.      __________________________________________ How to use the program
  177.  
  178.      To generate messages start ghostwriter with a keyword declared in
  179.      Ghost.Cfg as command line parameter. This keyword will become the
  180.      "Subject:" of the message(s) created by the program. If your key-
  181.      word in the configuration file includes blanks use "_" (under-
  182.      score) instead on the command line (example: keyword in Ghost.Cfg
  183.      is "Hi, John"; command line "hi,_john").
  184.  
  185.           The configuration file (default: Ghost.Cfg) must be a plain
  186.      ASCII file; lines starting with ";" (semicolon) or "%" (percent
  187.      sign) in the very first column are interpreted as comment lines;
  188.      everything following and including the comment character from
  189.      left to right on any line of this file is ignored and also
  190.      assumed to be a comment. Only blank (hex 20) and/or tab (hex 09)
  191.      characters are allowed as "white space" to separate keywords,
  192.      arguments or names.
  193.  
  194.           *Note*: instead of writing the full path you may use the
  195.      macro "netmail" on the "path" line of Ghost.Cfg. "Netmail" will
  196.      be replaced with the actual name of your netmail directory as
  197.      found in Binkley.Cfg, Fd.Sys, Config.Ra or Ghost.Cfg.
  198.  
  199.           DOS environment strings may be used for any parameter or
  200.      text in the configuration file. Use the usual %format% to create
  201.      references to entries to search for in the environment. Please
  202.      see the Sample.Cfg file for more details on this topic.
  203.  
  204.           The only limit of lines in Ghost.Cfg containing "to [name]
  205.      [address] {flags}" is set by the amount of free memory while the
  206.      program is up and running. Each addressee consumes 134 bytes of
  207.      memory.
  208.  
  209.           The full zone:net/node.point (four-dimensional) Fidonet
  210.      address format can be used in the adressees list; it *must* be
  211.      used to identify your network address in Ghost.Cfg or Bink-
  212.      ley.Cfg. If "zone:" is missing the receivers net is assumed to be
  213.      in the same zone as the origin system is located in. If the
  214.      address field contains no ".point" or ".0" the message is assumed
  215.      to be destined to the node number found in the address field.
  216.      Otherwise the message is still sent to the node number, but the
  217.      kludge ^aTOPT [point #] will be inserted after the message
  218.      header.
  219.  
  220.           Starting with Ghostwriter 1.32 the "address" statement in
  221.      BinkleyTerm 2.30 or newer is mandatory. Only if the new "four-
  222.      dimensional" address statement is present in Binkley.Cfg the
  223.      netmail message headers will contain the proper kludge lines
  224.      (^aFMPT) and correct zone information. Ghostwriter's origin lines
  225.      (if used) will confirm the point address format.
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.      Ghostwriter [2.1]                                          page 4
  234.  
  235.  
  236.  
  237.  
  238.  
  239.           The few lines of screen output while the program is working
  240.      may be re-directed to any file or device. If you like to keep a
  241.      log about ghostwriter's activities use it for example this way:
  242.  
  243.           keyword {-dvariable -ffilename.ext -k -s -t} >> ghost.log
  244.  
  245.           The format of the log messages created while executing the
  246.      program depends on the mailer/BBS software used. If Ghostwriter
  247.      is used with BinkleyTerm, an Opus-style log format will be
  248.      written. In case of FrontDoor Joaquim Homrighausen's log format
  249.      will be used. For RemoteAccess the log format used will be taken
  250.      from Config.Ra.
  251.  
  252.           An other method of logging the program's activities is to
  253.      use the keyword "#define statuslog [filename | device]". If this
  254.      line is detected in Ghost.Cfg a second log will be created in the
  255.      file or device following the "statuslog" keyword.
  256.  
  257.  
  258.      ___________________________________ QuickBBS specific assumptions
  259.  
  260.      For operating the program in a QuickBBS message style echomail
  261.      environment the following assumptions are made:
  262.  
  263.           The keyword "#define messagebase QBBS" is present in the top
  264.      (configuration) section of the Ghost.Cfg file. If this keyword is
  265.      not present *.MSG style echomail areas are assumed by the
  266.      program.
  267.  
  268.           The keyword "#define QBBSpath [d:\subdir]" is used. The best
  269.      location is immediately on the next line after the "#define
  270.      messagebase QBBS". This keyword only is required if neither
  271.      FrontDoor nor RemoteAccess is used as mailer/BBS software.
  272.      Normally, this path will be read by the program from Fd.Sys or
  273.      Config.Ra.
  274.  
  275.           A TosScan like Areas.Bbs file is located in the same subdi-
  276.      rectory as the QuickBBS message base Msg*.Bbs files. This file is
  277.      required for the mail check option (more on this later) and if
  278.      Ghostwriter is used to place echomail messages in QuickBBS
  279.      message boards.
  280.  
  281.           References to a specific board number are done in the format
  282.  
  283.           path #[nn]
  284.  
  285.           where [nn] is a number between 1 and 200. [nn] also must be
  286.      an active board number on your system; if for a given board
  287.      number on a "path #[nn]" line no according line in the Areas.Bbs
  288.      file is found the program notes this in the log file and
  289.      terminates.
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.      Ghostwriter [2.1]                                          page 5
  297.  
  298.  
  299.  
  300.  
  301.  
  302.           In pure FrontDoor environments no "#define messagebase"
  303.      statement is required. The program assumes the QuickBBS echomail
  304.      format if the corresponding path in Fd.Sys is not empty. Also,
  305.      the Areas.Bbs file is not required: the information of the file
  306.      Folder.Sys will be used instead.
  307.  
  308.           However: even in a QuickBBS style echomail environment the
  309.      netmail folder still is assumed to contain messages in the
  310.      standard FidoNet *.Msg format.
  311.  
  312.  
  313.      ___________________________________________________ Ondate option
  314.  
  315.      The keyword tag in Ghost.Cfg may be leaded by "ondate yyyy-mm-dd"
  316.      in column 1, followed by at least one blank character and the
  317.      keyword/message subject itself. The year must contain four
  318.      numeric characters, month and date must contain leading zeroes if
  319.      values below 10 are used. Year, month and day must be separated
  320.      by a dash (hex 2D) character.
  321.  
  322.           If "ondate yyyy-mm-dd" is present the message will only be
  323.      generated if the current date and "yyyy-mm-dd" match. The string
  324.      after "ondate yyyy-mm-dd" will become the message subject. The
  325.      command line parameter for the program must also be "ondate",
  326.      followed by the other command line options.
  327.  
  328.           The only wildcard character allowed in the date string after
  329.      "ondate" is the question mark ("?"). It acts exactly as the
  330.      wildcard in DOS' file related commands. A few examples: today is
  331.      February 3rd, 1990, translated to 1990-02-03 by the program's
  332.      "ondate" function.
  333.  
  334.           ondate 1990-??-03 will match;
  335.           ondate 1990-02-?? will match;
  336.           ondate 1990-??-03 will match;
  337.           ondate 1990-02-04 will not match;
  338.           ondate 1990-??-01 will not match;
  339.           ondate 19??-??-?? will match always (never use this!)
  340.  
  341.           The command line parameter to execute the program will be
  342.      "ondate", followed by the other optional parameters. The subject
  343.      of the message will be the string following the "ondate yyyy-mm-
  344.      dd" part of the line in Ghost.Cfg.
  345.  
  346.           A few examples for this option. Let's assume today's date as
  347.      February 5th, 1990 and the following line in Ghost.Cfg:
  348.  
  349.           ondate 19??-??-05: $fileC:\Misc\Newfiles.Zip
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.      Ghostwriter [2.1]                                          page 6
  360.  
  361.  
  362.  
  363.  
  364.  
  365.           The program is started with "ghost ondate" and maybe some
  366.      other command line options (-ffilename.ext, -k, -s, -t). The line
  367.      "ondate 19??-??-05 $fileC:\Misc\NewfilesZip" in Ghost.Cfg tells
  368.      the program to send C:\Misc\Newfiles.Zip on each 5th of the month
  369.      to the names found on the next "to" line, no matter if this is a
  370.      single name or a "#defined" group.
  371.  
  372.           ondate 19??-08-03: Best wishes for your birthday!
  373.  
  374.           Again, the program is started with "ghost ondate". The
  375.      message with the subject "Best wishes for your birthday!" will
  376.      *not* be generated, since today's date is February 5th. Only if
  377.      "ghost ondate" is executed on the 3rd of August this message will
  378.      be created.
  379.  
  380.           Note: you may only use one "ondate yyyy-mm-dd" tag for the
  381.      same day. If there are more "ondate yyyy-mm-dd [subject]" lines
  382.      in Ghost.Cfg matching the same date only the first match will be
  383.      covered.
  384.  
  385.  
  386.      ____________________________________________________ Onday option
  387.  
  388.      This option is very similar to "ondate": instead of comparing a
  389.      "yyyy-mm-dd" string with the current system date the program
  390.      searches Ghost.Cfg for a tag line "onday <dayname> <subject>".
  391.  
  392.           Valid strings for <dayname> are Monday, Tuesday, Wednesday,
  393.      Thursday, Friday, Saturday and Sunday. Neither the day names
  394.      listed in Ghost.Cfg in the "#define country" section nor the
  395.      "country" settings in your Config.Sys do affect the day names
  396.      required by the "onday" option. These day names always must be
  397.      written in English.
  398.  
  399.  
  400.      ___________________________________________ Performing mail check
  401.  
  402.      The program can be used to perform a check for messages not
  403.      received by the sysop within a certain number of days. First, in
  404.      the "#define section" of the configuration file, use "#define
  405.      bouncelimit n" to define a number between 1 and 65000. "N" is the
  406.      number of days the ghostwriter will wait for you to read messages
  407.      addressed to you. Next, declare a label called "mailcheck" in
  408.      Ghost.Cfg. Do *not* use a "to" line after the label line; the
  409.      names and netword addresses will be found by the ghostwriter
  410.      itself. The next non-comment line is a "path" line. There are two
  411.      options:
  412.  
  413.           #1: Write only one subdirectory name/board number after the
  414.      "path" keyword. The mail check will be performed only in this
  415.      subdirectory/QuickBBS echomail board.
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.      Ghostwriter [2.1]                                          page 7
  423.  
  424.  
  425.  
  426.  
  427.  
  428.           #2: Use "path all" to perform a mail check in all message
  429.      subdirectories/boards available on the system. In a *.Msg echo-
  430.      mail environment the Areas.Bbs file must be present in the
  431.      mailer's subdirectory. This file should have the same structure
  432.      as the Areas.Bbs file used for example by ConfMail or Qmail
  433.      (drive:\subdir\... [blank] echo tag [blank] list of nodes). In a
  434.      QuickBBS style echomail environment the board number is the first
  435.      item on each line of this file. In FrontDoor environments this
  436.      file is not required.
  437.  
  438.           If you use the "path all" option the netmail directory also
  439.      will be included in the mail check.
  440.  
  441.           The same line may include the keywords "answer" and "for-
  442.      ward". "Answer" tells the program to create replies into the
  443.      netmail subdirectory. "Forward" instructs the program to forward
  444.      a copy of the message not received yet by the sysop into the
  445.      netmail area. This forwarded message will have the "received" and
  446.      "sent" flag set. If "forward" is missing the non-received message
  447.      may be lost during the next message kill/renumber event.
  448.  
  449.           After the "mailcheck" and "path" lines the text of the
  450.      message must be located. Now the program may be started with the
  451.      command line parameter "mailcheck". It will scan the message
  452.      subdirectories/QuickBBS message boards given on the "path" line.
  453.      If there are any messages not received by you within
  454.      "bouncelimit" days first the "received" flag for each of those
  455.      messages will be set. Next the answer message is generated,
  456.      depending on the presence of the "answer" keyword. Finally, if
  457.      "forward" was present, a copy of the unreceived message destined
  458.      to the sysop will be placed into the netmail directory.
  459.  
  460.           By default all messages will be replied; you may override
  461.      this by defining a special group called "mailcheck". If this
  462.      group is present only messages from this group members will be
  463.      replied; other messages will be ignored. This mailcheck group too
  464.      must be defined in the "#define" section of the configuration
  465.      file; before any "to", "path" and message text lines. See page 18
  466.      for more details on how to define groups. It's not necessary to
  467.      include the network addresses or message flages for the
  468.      "mailcheck" group members.
  469.  
  470.           The address of the reply will be taken from the original
  471.      message header (if it was a netmail message) or preferably from
  472.      the "^aMSGID: <message ID> " or " * Origin: " line (if it was an
  473.      echomail message).
  474.  
  475.           In a QuickBBS message style environment a special built-in
  476.      tag is available: "report". The program's report function scans
  477.      all echomail boards for new messages addressed to the sysop. By
  478.      default the result of this message scan is placed as private
  479.      netmail message in the netmail folder. Using the command line
  480.      switch "-d<filename.ext>" or "-d<any device>" the report is sent
  481.      to <filename.ext> or <any device>.
  482.  
  483.  
  484.  
  485.      Ghostwriter [2.1]                                          page 8
  486.  
  487.  
  488.  
  489.  
  490.  
  491.      ________________________________________ How to use the "cosysop"
  492.  
  493.      In connection with the mail check option there's a special
  494.      keyword available: "#define cosysop".
  495.  
  496.           The execution of the mail check option will differ from its
  497.      "normal" behaviour if this statement is present in the confi-
  498.      guration file. All not yet received messages addressed to the
  499.      sysop will be forwarded to the members of the group "cosysop"
  500.      (for more details on defining groups see page #18). The original
  501.      message will be marked as "received", the forwarded copies will
  502.      have the corresponding message flags set as found on the lines
  503.      for the "cosysop" group members names and network addresses.
  504.  
  505.           This message forwarding is done independent of the probably
  506.      used value for "bouncelimit". No matter how old (or how new) the
  507.      messages are: if they are addressed to the sysop and have not yet
  508.      been received they will be forwarded to the "cosysop" group.
  509.  
  510.           Also messages destined to "Sysop", "all Sysops" or similar
  511.      constructions or the sysop's first name will be forwarded by the
  512.      program. The forwarded messages will reside in the netmail
  513.      directory, no matter if the original message was an echomail or
  514.      matrix message.
  515.  
  516.           Messages forwarded by the program -- no matter if "#define
  517.      cosysop" is present or not -- will have a short trailer at the
  518.      start of the message text. This trailer lines will show the
  519.      sender's name and address, the original message date, the echo-
  520.      tag for the corresponding area (from the Areas.Bbs-like file) or
  521.      the name of the message subdirectory (if no echo-tag could be
  522.      found).
  523.  
  524.           An other keyword also alters the program's behaviour while
  525.      performing mail check: "#define purge". It must only be used if
  526.      there's a defined group with the same name, "purge". As with the
  527.      group "mailcheck" the "purge" group members need no network
  528.      addresses or message flags. The "purge" and the "mailcheck" group
  529.      are simple lists of names (firstname lastname); each one on a
  530.      single line without any further text.
  531.  
  532.           If "#define purge" is active in Ghost.Cfg messages from one
  533.      of the "purge" group members will not be replied or forwarded to
  534.      the sysop or the cosysop group members. Furthermore, if in any
  535.      message area there are messages from or to one of the "purge"
  536.      group members this messages will be deleted. If the "#define
  537.      purge" keyword is not active, this messages will not be deleted.
  538.      In this case the "purge" group just acts as a list of persons
  539.      from which the messages should be ignored.
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.      Ghostwriter [2.1]                                          page 9
  549.  
  550.  
  551.  
  552.  
  553.  
  554.      _________________________________________________ Shelling to DOS
  555.  
  556.      DOS commands may be executed from within ghostwriter. One or more
  557.      "dos [command]" lines in Ghost.Cfg are used for this purpose. As
  558.      shown in the file Sample.Cfg the only place where a "dos [com-
  559.      mand]" statement may be used (and makes sense) is after the "key-
  560.      word" line and before any "to [first name] [last name] [address]
  561.      {flags}" or "to #group [group name]" lines.
  562.  
  563.           Depending on DOS version, installed device drivers and any
  564.      TSR's on a 640 kb computer there are approximately 540 kb
  565.      available for shelling to other applications. The program tries
  566.      to swap itself to EMS memory; if this is not possible a swap file
  567.      in the subdirectory found indicated by the TMP or TEMP environ-
  568.      ment variable will be created.
  569.  
  570.           Here's a memory map from my machine during execution of a
  571.      program from within "Ghostwriter":
  572.  
  573.      Machine Type:  PC/XT Model 286                             DOS Version:  4.01
  574.      ROM Date:      04/21/86
  575.  
  576.      Resident extensions...
  577.  
  578.      Address    Program   Parent    Seg   Bytes            Hooked Vectors
  579.      ─────────  ────────  ────────  ───  ──────   ────────────────────────────────
  580.      0B43:0000  Config    N/A         5   41632   02 08 09 0A 0E 10 19 1B 29 2F 33
  581.                                                   70 76
  582.      1572:0000  DOS       N/A         2    6512   2E
  583.      170B:0000  PC-CACHE  DOS         1    6992   13 21 67
  584.      18CF:0000  GHOST     DOS         2    5648
  585.      1A32:0000  DOS       N/A         3    6400   22 24
  586.  
  587.      Memory Control Block overhead   15     240
  588.  
  589.      Free memory                      2  541824
  590.  
  591.      Next command load address:       1BC6:0000
  592.  
  593.           Before shelling to the command following the "dos" statement
  594.      a check is done to verify the COMSPEC entry in the computer's
  595.      environment. If COMSPEC is not found the program will log this to
  596.      the logging device (i.e. the screen, a file or a printer) and
  597.      assume normal execution. If the command called from within
  598.      ghostwriter produces redirectable I/O its output will be to the
  599.      same logging device as used by ghostwriter.
  600.  
  601.           An example: you direct the ghostwriter's log to Binkley.Log
  602.      using the DOS append symbol ">>". The line "dos mem /program" is
  603.      executed. Its output will be found in Binkley's log file. If you
  604.      execute "dos mem > f:\mem.txt" the child process program will
  605.      direct its output to an other file.
  606.  
  607.  
  608.  
  609.  
  610.  
  611.      Ghostwriter [2.1]                                         page 10
  612.  
  613.  
  614.  
  615.  
  616.  
  617.           After a "dos [command]" line has been detected and COMSPEC
  618.      could be located the current content of the screen and the cursor
  619.      position are saved. Execution of the "shelled" application
  620.      begins. Afterwards the screen is restored to its old state, the
  621.      cursor position is updated and the shelled program's exit code
  622.      (errorlevel) is noted in a log line. The ghostwriter returns to
  623.      the same drive and subdirectory where it resided before executing
  624.      the shelled command.
  625.  
  626.           If more than one "dos [command]" line for the tag is found a
  627.      temporary batch file will be created by the program. Then,
  628.      instead of swapping and executing each single line, the temporary
  629.      batch file is executed at once and deleted afterwards. This batch
  630.      file will be placed in the subdirectory pointed to by the TMP or
  631.      TEMP environment variable.
  632.  
  633.           The "dos [command]" line will be parsed for all built-in
  634.      magic filenames the program supports (see page #23 for the
  635.      complete list). Additional, there are four variables available as
  636.      arguments for DOS commands: $day2, $day3, $week and $pday.
  637.  
  638.           $day2 returns a two character string containing the current
  639.      day number; if the current day number is greater than 100, the
  640.      first digit will not be included in the string returned by $day2.
  641.      $day3 returns a three character string containing the current day
  642.      number; leading zeroes will be added.
  643.  
  644.           $week is a two character string containing the number of the
  645.      current week; here also leading zeroes will be added.
  646.  
  647.           $pday ("process day"): on Friday this variable returns the
  648.      current day number; on each other day of the week it returns the
  649.      day number of the most current Friday. This string is three
  650.      characters long; leading zeroes will be included.
  651.  
  652.           With this additional variables programs which return the
  653.      current day number ("DAYNBR") probably become obsolete.
  654.  
  655.           Example: the string "copy d:\inbound\nodelist.$day3 d:\misc"
  656.      will be expanded to "copy d:\inbound\nodelist.033 d:\misc",
  657.      assumed 33 is the current day number. See also the Sample.Cfg
  658.      file included in the distribution archive for more examples on
  659.      this feature.
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.      Ghostwriter [2.1]                                         page 11
  675.  
  676.  
  677.  
  678.  
  679.  
  680.      _________________________________________________ Server requests
  681.  
  682.      A very powerful feature is available through the built-in tag
  683.      "server". Only a few statements are required to initialize
  684.      execution of any batch file even from a remote location:
  685.  
  686.           Use "#define serveruser <firstname> [<lastname>]" in the
  687.      define section of the configuration file. Then, use "#define
  688.      serverpassword <password>" to indicate the keyword required to
  689.      execute batch files from remote.
  690.  
  691.           Here's what happens if both keywords are set and the program
  692.      is started with the one and only command line parameter "server":
  693.  
  694.           The netmail directory is searched for messages destined to
  695.      <firstname> <lastname> as found on the "#define serveruser" line.
  696.      If messages to this "user" are found a check for a match between
  697.      the "Subject:" of the message and the <password> given on the
  698.      "#define serverpassword" line is performed. If user name,
  699.      password and destination system match the message is saved as
  700.      batch file. A copy of the message will be forwarded as private
  701.      netmail message to the sysop. Afterwards, this "message batch" is
  702.      executed and deleted.
  703.  
  704.           If more than one message for "serveruser" was found first
  705.      the messages are sorted by number. Then, each message is saved in
  706.      ASCII format to a batch file and forwarded to the sysop. Finally,
  707.      a master batch file is created. This master batch simply calls
  708.      each single batch file and deletes it after execution. Finally,
  709.      the master batch itself is deleted by the program.
  710.  
  711.           Of course, just like executing a "dos <command>" line, the
  712.      program will be swapped nearly complete out of memory. The
  713.      program always returns to the same drive and subdirectory where
  714.      it resided before the "server" function was invoked. There is no
  715.      restriction what can be done in this "message batches". Even all
  716.      log files and the ghostwriter program itself may be deleted
  717.      without "hanging" the system. The only system parameter not
  718.      checked during server execution is the video mode currently used.
  719.      Take care to always return to the same video mode used before
  720.      invoking the server function.
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.      Ghostwriter [2.1]                                         page 12
  738.  
  739.  
  740.  
  741.  
  742.  
  743.      ________________________________________ How to use the "trigger"
  744.  
  745.      This function is similar to the "server" function. Instead of
  746.      attempting to execute the message text as batch file DOS commands
  747.      or predefined batch files will be executed if specific messages
  748.      exist in the netmail subdirectory.
  749.  
  750.           "Triggers" are messages which must be addressed to your
  751.      primary network address (additonal AKA addresses only will be
  752.      checked in FrontDoor environments). First, these messages must
  753.      not be received to be qualified for triggering any DOS command.
  754.      Next, the "Subject" fields of this messages must match the
  755.      "Subject" keyword in the Ghost.Cfg file (more on this a few lines
  756.      later). If the "From" keyword of the defined trigger is not an
  757.      empty line, the message's "From" field also must match.
  758.  
  759.           Those triggers are defined in the "#define" section of the
  760.      configuration file. Here's the format for this section:
  761.  
  762.           #define trigger: This line is required to indicate the start
  763.      of this section. If present it must not be preceded by any
  764.      comment character.
  765.  
  766.           subject <message subject> (max. 72 characters): This is the
  767.      message subject which will be compared with each single netmail
  768.      message. A match is true if the shorter string is fully included
  769.      in the longer string.
  770.  
  771.           from [firstname lastname] (max. 36 characters): Firstname
  772.      Lastname are optional; the "from" line is *not* optional. If
  773.      "from" is followed by a name "Subject" *and* "From" fields of a
  774.      message must match; otherwise only the "Subject" fields must
  775.      match to act as trigger.
  776.  
  777.           command <DOS command>: Any valid DOS command or batch file
  778.      name. Use "first command;next command;next command;...;" to
  779.      execute more than one DOS command or batch file. The last
  780.      character of a multiple command line *must* be a semicolon.
  781.  
  782.           #end: This line is required to indicate the end of this
  783.      section. It must not be preceded by any comment character.
  784.  
  785.           See the file Sample.Cfg included in the distribution package
  786.      for more details on the "trigger" section.
  787.  
  788.           If the program is started with the parameter "trigger" all
  789.      messages in the netmail directory will be searched for matching
  790.      subjects (and matching "From" fields if the corresponding "From"
  791.      field in Ghost.Cfg was not empty). If matching messages are
  792.      found, the "Received" flag will be set by the program; next the
  793.      DOS command associated to the "Subject" will be executed. As
  794.      usual first an attempt to swap to EMS or harddisk will be done.
  795.  
  796.           That's it.
  797.  
  798.  
  799.  
  800.      Ghostwriter [2.1]                                         page 13
  801.  
  802.  
  803.  
  804.  
  805.  
  806.      ____________________________________________ Predefined variables
  807.  
  808.      There are 34 predefined variables you may use in the message
  809.      text. Each one starts with the $ sign. The ghostwriter scans the
  810.      text and substitutes the $variable with a value computed at run
  811.      time. Here is a description of each variable.
  812.  
  813.      $anetlist      This are the built-in "magic" filesnames
  814.      $bbsnet        the program supports.
  815.      $egglist
  816.      $fidonews      The full filename of this nodelist and news-
  817.      $netlist       letter files are computed at execution time
  818.      $nodediff      and may be inserted into the message text.
  819.      $nodelist
  820.      $opcndiff      The extension of these file names depends on
  821.      $opcnlist      your "#define packer" statement (see page 23)
  822.      $pointnet
  823.      $signodes
  824.  
  825.      $day           number of the day in current month; digit without
  826.                     leading zeroes
  827.  
  828.      $dname         name of the current day, possible values range
  829.                     from Sunday to Saturday
  830.  
  831.      $diskfree      free space in kilobytes left on the currently
  832.                     logged drive
  833.  
  834.      $dosversion    major and minor DOS version number
  835.  
  836.      $fromnet       net number of the the message's origin system
  837.  
  838.      $fromnode      node number of the message's origin system
  839.  
  840.      $frompoint     point number of the point system currently using
  841.                     the program
  842.  
  843.      $fromzone      the message origin zone as single number
  844.  
  845.      $memory        free RAM space in kilobytes currently free.
  846.                     *Note*: this is not the same amount of memory
  847.                     available while shelling to DOS.
  848.  
  849.      $month         current month number without leading zeroes
  850.  
  851.      $mname         name of the current month; possible values range
  852.                     from January to December
  853.  
  854.      $name          first name of the addressee of the message
  855.  
  856.      $origin        name of the system currently using the program
  857.  
  858.      $tonet         net number of the message's destination system
  859.  
  860.  
  861.  
  862.  
  863.      Ghostwriter [2.1]                                         page 14
  864.  
  865.  
  866.  
  867.  
  868.  
  869.      $tonode        node number of the message's destination system
  870.  
  871.      $topoint       point number of the message's destination system
  872.  
  873.      $tozone        the message destination zone as single number
  874.  
  875.      $time          current time in the format hh:mm:ss
  876.  
  877.      $year          current year in four digit format
  878.  
  879.      $bouncearea    name of the not-received original message echomail
  880.                     area
  881.      $bouncedate    original message date
  882.      $bouncelimit   number of days in which the sysop missed to read
  883.                     (receive) the message
  884.  
  885.      The last three variables should only be used when the program
  886.      performed the check for messages waiting for the sysop; see page
  887.      7 for more on this topic.
  888.  
  889.           Here are two special operators which add flexibility to the
  890.      program:
  891.  
  892.      $include       [full qualified drive-, path- and filename]
  893.  
  894.           If this operator is found in column #1 of the message text
  895.      the ghostwriter attempts to read the file and include its
  896.      contents into the message. No check is performed to verify that
  897.      the file is a plain ASCII file. Unimaginable troubles may result
  898.      if you use $include c:\dos\command.com in the Ghost.Cfg file.
  899.      However: if your mailer/editor combination supports any
  900.      information hidden behind ^a (01h) characters ("kludges") you may
  901.      include those lines in any message line found in Ghost.Cfg or any
  902.      file to $include in the message.
  903.  
  904.           Be sure to separate the $include directive and the filename
  905.      with at least one space character. Always make sure that the
  906.      resulting message created by one or more $include's does not
  907.      exceed the maximal message size your message bundler is able to
  908.      handle. The maximal message size ghostwriter can process is
  909.      limited only by the amount of free memory at run time.
  910.  
  911.           The include file's text is not checked for any variable or
  912.      special operator. If its text contains the strings $name or
  913.      $diskfree they are imported as literals into the message text.
  914.  
  915.           In case the file specified for including in the message
  916.      could not be found the line "[include file not found]" is
  917.      inserted in the message.
  918.  
  919.      $dummy         see page #19 for more on this keyword.
  920.  
  921.  
  922.      ___________________________________________________ Message flags
  923.  
  924.  
  925.  
  926.      Ghostwriter [2.1]                                         page 15
  927.  
  928.  
  929.  
  930.  
  931.  
  932.      All messages created by ghostwriter will have the "local" bit
  933.      set. File attaches generated by the ghostwriter additionally will
  934.      have the "kill/sent" flag set; you don't need to specify "kill"
  935.      in Ghost.Cfg.
  936.  
  937.           To individually set the message flags according to your or
  938.      your message bundler's needs you may use any combination of the
  939.      six flags the program supports: crash, hold, private, kill,
  940.      request and update. One or more attribute flag keyword(s) on the
  941.      "to [address]"-line, separated by at least one blank character
  942.      from the zone:net/node.point field will set the message flags.
  943.  
  944.           Additional mailer specific flags also may be used; see page
  945.      #18 for more details.
  946.  
  947.  
  948.      ___________________________ Inter-zone messages: #define zonegate
  949.  
  950.      The statement "#define zonegate" will influence the contents of
  951.      the message header when creating messages destined to other
  952.      zones. If a "#define zonegate" line in the "#define" section of
  953.      Ghost.Cfg was present messages to other zones will be re-routed
  954.      to the gate for the destination zone. If this statement is
  955.      missing the net and node number of the destination system will be
  956.      written into the message header (this is the default).
  957.  
  958.           Find out the requirements for inter-zone messages or inter-
  959.      zone file attaches of the software used on your system. No matter
  960.      if "#define zonegate" is present or not: the ^aINTL kludge line
  961.      will always be inserted to message headers for other zones.
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.      Ghostwriter [2.1]                                         page 16
  990.  
  991.  
  992.  
  993.  
  994.  
  995.      _________________________ National customization: #define country
  996.  
  997.      By default the program uses the English names to substitute any
  998.      $dname or $mname found in Ghost.Cfg. If you like you may add a
  999.      special section in the ghostwriters configuration file. Entitle
  1000.      this section with #define country in a line in Ghost.Cfg and add
  1001.      the seven names of the weekdays and the twelve monthnames, each
  1002.      one of them on a single line.
  1003.  
  1004.           Have a look at this section from the Ghost.Cfg I use on my
  1005.      system:
  1006.  
  1007.      ; ---------------------------------------------------------------
  1008.      #define country                  specific data for FRG, CH and A 
  1009.      ; ---------------------------------------------------------------
  1010.      ;
  1011.      ; ---------------------------------------------------------------
  1012.      ;                       first the day names, start day is Sunday 
  1013.      ; ---------------------------------------------------------------
  1014.      ;
  1015.        Sonntag
  1016.        Montag
  1017.        Dienstag
  1018.        Mittwoch
  1019.        Donnerstag
  1020.        Freitag
  1021.        Samstag
  1022.      ;
  1023.      ; ---------------------------------------------------------------
  1024.      ;                              now the monthnames in order 1..12 
  1025.      ; ---------------------------------------------------------------
  1026.      ;
  1027.        Januar
  1028.        Februar
  1029.        März
  1030.        April
  1031.        Mai
  1032.        Juni
  1033.        Juli
  1034.        August
  1035.        September
  1036.        Oktober
  1037.        November
  1038.        Dezember
  1039.  
  1040.  
  1041.           [Readers from other countries: please excuse the "funny cha-
  1042.      racters" shown in this example.]
  1043.  
  1044.           The program's strategy for this quite rudimentary "custom-
  1045.      ization" is to scan Ghost.Cfg for the "#define country" section.
  1046.      The next 19 non-comment lines are assumed to represent the names
  1047.      of the seven weekdays and the twelve monthnames used in your
  1048.      country. The first non-comment line encountered after #define
  1049.  
  1050.  
  1051.  
  1052.      Ghostwriter [2.1]                                         page 17
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.      country will be used for Sunday, line #7 of this section will
  1059.      represent Saturday, lines #8 to #19 will be used for the month
  1060.      numbers 1 to 12 if $mname is found anywhere in the message text.
  1061.  
  1062.           It's not necessary to include this section in Ghost.Cfg; the
  1063.      English names will be used if it is not found. But if you prefer
  1064.      to use this feature the #define country section must be located
  1065.      between the "from", "address", and "origin" section (if any) and
  1066.      the first "keyword", "dos", "to [name] [address] {flags}" and
  1067.      "path" section.
  1068.  
  1069.  
  1070.      __________________________________ Addressees list: #define group
  1071.  
  1072.      You may use the keyword #define group in any line of the programs
  1073.      configuration file to define groups of addressees. Take care: any
  1074.      "#define [parameter]" line must be located before the first
  1075.      "subject", "to" and "path" entry in the configuration file. The
  1076.      complete syntax for this entry line is as follows:
  1077.  
  1078.           #define group [groupname] {$file d:\dir\filename.ext}
  1079.  
  1080.           First comes the name of the group. This is exactly the same
  1081.      name you use later in the configuration file to refer to the
  1082.      group in the line containing the "to" statement. The maximum
  1083.      length of the group name is 40 characters; the only character
  1084.      which must not be used in ghe group name is the semicolon (;) as
  1085.      it is treated as "start of comment"-tag. The reference to the
  1086.      group is done by
  1087.  
  1088.           to group [groupname] <flags> <^amailer specific flags>
  1089.  
  1090.           following the keyword line and just before the "path" line
  1091.      in the Ghost.Cfg file.
  1092.  
  1093.           Next in the Ghost.Cfg file are lines containing the names,
  1094.      the network address of each group member and -- optionally -- the
  1095.      required message flags; each "record" on a single line. The first
  1096.      "; comment line" is interpreted as end of group-mark.
  1097.  
  1098.           The names of the group members may optionally be contained
  1099.      in an ASCII file which name is given by $file after the group's
  1100.      name. The format of this file is exactly the same as used in
  1101.      Ghost.Cfg following #define group or directly on each "to" line,
  1102.      i.e. [first name] [last name] [zone:net/node.point] {flags}.
  1103.  
  1104.           The programs also supports group members lists in the format
  1105.      generated for example by programs like Bob Hartman's "ParseLst":
  1106.      last name [comma] first name [blanks] [zone:] net/node. Since
  1107.      this file (Fidouser.Lst) contains no keywords for the message
  1108.      attribute flags ghostwriter sets the "private" flag (see also
  1109.      page #3).
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.      Ghostwriter [2.1]                                         page 18
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.           As with #define country each #define group section has to be
  1122.      located before any "keyword", "dos", "to" and "path" section in
  1123.      the configuration file. The number of #groups and the number of
  1124.      members of each group is limited only by the amount of free RAM
  1125.      while operating the program.
  1126.  
  1127.           Attention: *do not* use a group followed by one or more
  1128.      individual "to" lines. Messages only can be adressed by one or
  1129.      more "to" [firstname] [lastname] [address] {flags} line(s) or by
  1130.      one (and *only* one) "to #group [groupname]" line. Serious system
  1131.      crashes may occur if there's an attempt to mix both group and
  1132.      individual adressees references for one message.
  1133.  
  1134.           Optionally, mailer specific flags may be included after the
  1135.      group name. This is done by typing at least one blank character
  1136.      after the group name, a caret ("^", Alt-94), an "a" (Alt-97)
  1137.      character, immediately followed by any string required or
  1138.      supported by the mailer. This string will be converted to
  1139.      uppercase letters and included, hidden by a ^A (0x01 character)
  1140.      as very last kludge line right before the message text in a
  1141.      netmail message.
  1142.  
  1143.           Example: the statement "to group beta ^aflags dir" will
  1144.      teach the program is insert "0x01FLAGS DIR0x0D0x0A" as additional
  1145.      kludge line into each message to the beta group members.
  1146.  
  1147.           This ^a<mailer flag> string also can be used on each line,
  1148.      no matter if it's a group address line or a single "to" line.
  1149.      Here's the order those kludges will be inserted after the message
  1150.      header:
  1151.  
  1152.           INTL <destination> <origin>
  1153.           TOPT <point #>
  1154.           FMPT <point #>
  1155.           MAILER SPECIFIC STRING from "to group" line
  1156.           MAILER SPECIFIC STRING from single "to" line
  1157.  
  1158.  
  1159.      ____________________________ User-defined variable: the -d option
  1160.  
  1161.      The -d{variable} command line parameter only makes sense with a
  1162.      $dummy keyword on a line in the configuration file: if -dcon-
  1163.      tents_of_the_variable is present on the command line "contents of
  1164.      the variable" will be inserted for each $dummy found in the
  1165.      configuration file. This is not only true for the message text;
  1166.      also the process tag (the "Subject:" of a message, usually
  1167.      identical to the first command line parameter) or a network
  1168.      address may include one or more $dummy string. If you use $dummy
  1169.      as variable for a network address it's your responsibility to
  1170.      verify the proper format.
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.      Ghostwriter [2.1]                                         page 19
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.           Note the use of the underscore character: since DOS sepa-
  1185.      rates command line parameters by blanks it's necessary to substi-
  1186.      tute them by the _ character. If there are no underscores in the
  1187.      string following -d no substitution will take place. The same is
  1188.      true for the program's most important parameter: the keyword
  1189.      Ghost.Cfg will be scanned for.
  1190.  
  1191.           Note also that there is no blank between -d and the first
  1192.      character of the string you whish to use for each $dummy. If your
  1193.      message text contains a $dummy but no -dtext_for_dummy was found
  1194.      on the command line the ghostwriter will insert "-d parameter not
  1195.      found" into the message.
  1196.  
  1197.           The combination $include $dummy or the use in an address
  1198.      line "to New Sysop 1:170/$dummy" maybe is one of the most power-
  1199.      ful features of the program's part dealing with variables.
  1200.  
  1201.  
  1202.      _____________________ Alternate configuration file: the -f option
  1203.  
  1204.      By default the program searches for Ghost.Cfg in the same sub-
  1205.      directory where the Ghost.Exe file is located. If for any reason
  1206.      you whish to override this file you may include a full qualified
  1207.      filename on the command line immediately following the -f
  1208.      parameter (no blanks, please).
  1209.  
  1210.           This alternate configuration file must have the same struc-
  1211.      ture as Ghost.Cfg: optionally #define country, optionally #define
  1212.      group and "keyword", "dos", "to" and "path" sections.
  1213.  
  1214.  
  1215.      ____________________________ Generate kludge lines: the -k option
  1216.  
  1217.      Use -k anywhere on the command line to force insertion of kludge
  1218.      lines into the message text. As described on page #24 the ghost-
  1219.      writer optionally inserts up to two kludge lines into the
  1220.      message(s). If you experience any problems with your message
  1221.      bundler, especially when processing ghostwriter messages with
  1222.      file attaches, please do not use this option.
  1223.  
  1224.           Ghostwriter has been tested on systems operating with
  1225.      different software. No problems were encountered on nodes using
  1226.      Greg Dawson's Qmail 1.00a, Bob Hartman's ConfMail 3.31 and 4.0
  1227.      combined with the Opus-rooted oMMM and FrontDoor working with
  1228.      TosScan. In none of these systems the kludge lines generated
  1229.      seemed to cause troubles.
  1230.  
  1231.  
  1232.      _____________________________ Use other sysop name: the -n option
  1233.  
  1234.      To use the program with a different sysop name as found in
  1235.      Binkley.Cfg, Config.Ra or Fd.Sys use the command line parameter
  1236.      "-n<new_name>" when invoking the program.
  1237.  
  1238.  
  1239.  
  1240.  
  1241.      Ghostwriter [2.1]                                         page 20
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.           As usual first and last name of <new_name> must be separated
  1248.      by an underscore character. <new_name> then replaces the sysop
  1249.      name in all program functions, including mail check. Of course
  1250.      the files Binkley.Cfg, Config.Ra and Fd.Sys never will be chan-
  1251.      ged; <new_name> just acts as temporary replacement.
  1252.  
  1253.  
  1254.      _____________________________________ No word wrap: the -s option
  1255.  
  1256.      By default each message line is terminated by a CR/LF sequence
  1257.      ("hard return"). To override this and leave line formatting up to
  1258.      the editor include the -s option somewhere on the command line.
  1259.      Anyway: lines ending with ":", ".", "!" and "?" will be treated
  1260.      as "hard returns".
  1261.  
  1262.  
  1263.      _____________________________________ No tear line: the -t option
  1264.  
  1265.      You may use the -t parameter to prevent creation of the tearline
  1266.      and the origin line if you don't like them or prefer to use those
  1267.      lines created by the echomail processor of your choice.
  1268.  
  1269.  
  1270.      _______________________________________ Tear line and origin line
  1271.  
  1272.      By default the programs appends an additional blank line and a
  1273.      tear line to the message. If the destination path of the message
  1274.      is an echo area (i.e. only a single message is generated) the
  1275.      program will append also an origin line. The contents of this
  1276.      origin line will be taken from an ASCII file named "Origin" in
  1277.      the message subdirectory. If this file doesn't exist the ghost-
  1278.      writer uses your system name as found in Binkley.Cfg,  Fd.Sys or
  1279.      Config.Ra, followed by "(zone:net/node.point)".
  1280.  
  1281.           If neither Binkley.Cfg, Fd.Sys or Config.Ra could be located
  1282.      the words following "system" in Ghost.Cfg will be used. If there
  1283.      is no origin declared in Ghost.Cfg ghostwriter's last attempt
  1284.      before giving up and using "[The node without any origin]
  1285.      (zone:net/node.point)" will be to check the current directory for
  1286.      an existing Areas.Bbs or Origin file to extract the system's name
  1287.      from.
  1288.  
  1289.           If multiple messages are created ghostwriter assumes them to
  1290.      be privte messages for the matrix or the local area. No origin
  1291.      line will be appended to this messages. To prevent creation of
  1292.      the tear line use -t as command line parameter. The program never
  1293.      will append any tear and origin line to messages created in the
  1294.      netmail subdirectory.
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.      Ghostwriter [2.1]                                         page 21
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.      ___________________________________________________ File attaches
  1311.  
  1312.      To attach a file to a matrix message addressed to one person or a
  1313.      group of persons use the special command line parameter $file
  1314.      immediately followed by the full qualified name of the file you
  1315.      wish to attach. In Ghost.Cfg this entry is declared as keyword.
  1316.  
  1317.           Sample call: ghost $filed:\files\netstuff\nodediff.a12
  1318.  
  1319.           Please note: there is no blank between $file and the name of
  1320.      file to attach.
  1321.  
  1322.           In the above example D:\Files\Netstuff\Nodediff.A12 becomes
  1323.      the "Subject:" of the message; the resulting messages will have
  1324.      the "file attach" and "kill/sent" flag set.
  1325.  
  1326.           When sending file attaches the programs also reports  file-
  1327.      name, file size and date/time stamp of the file to send. This of
  1328.      course is only true if the file to be attached could be found in
  1329.      the moment the program is executing. Anyway: the program does not
  1330.      mind if the file to be attached not exists.
  1331.  
  1332.           Joker and wildcard characters may be used in the filename.
  1333.      The first matching file is attached to the message; if there are
  1334.      more matching files the program generates additional attach
  1335.      messages without message text for each matching filename found.
  1336.      If no single matching file was found the file attaches will not
  1337.      be built; don't include joker or wildcard characters in filenames
  1338.      to override this function and send a file though it is not yet
  1339.      existing in the subdirectory included in the filename.
  1340.  
  1341.           The attach filename may also be one of the "magic" filenames
  1342.      used on your system. First the program checks to see if the file
  1343.      to be attached exists. If this file could not be located and the
  1344.      "okfile" defined in Binkley.Cfg, Ghost.Cfg or Fd.Sys contains a
  1345.      description for this "magic", this description will be inserted
  1346.      as attach name. However: this is only true for the first matching
  1347.      "magic" filename.
  1348.  
  1349.           When sending multiple file attaches the program counts the
  1350.      number of files and the total file size in kilobytes and logs
  1351.      this to the screen.
  1352.  
  1353.           The filename may be followed by -d [nnn] on the same line in
  1354.      the Ghost.Cfg file. [nnn] must be a number between 1 and 65000;
  1355.      it allows you to build the attach message(s) only if the file is
  1356.      not older then [nnn] days. This flag may also be used if there
  1357.      are joker or wildcard characters in the filename.
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.      Ghostwriter [2.1]                                         page 22
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.      ___________________________________________________ File requests
  1374.  
  1375.      The "request" flag can be used to create file requests. The
  1376.      "Subject:" of the message will be the name of the file to be
  1377.      requested; the destination of the file request is taken from the
  1378.      "to name address { flags }" line of Ghost.Cfg. Any of the built-
  1379.      in "magic" filenames (see next section) the programs supports can
  1380.      be used as "keyword" command line parameter and as tag line in
  1381.      the program's configuration file. If one of this "magic" filenams
  1382.      is used it will be converted to the full filename as valid for
  1383.      the current system's date.
  1384.  
  1385.           An example: the call "ghost $fidonews" { more options } will
  1386.      scan Ghost.Cfg for the tag line "$fidonews". Since "$fidonews" is
  1387.      one of the "magic" filenames it is replaced by the currently
  1388.      valid full filename. This feature is very handy for requesting
  1389.      once a week the same Fido Newsletter or various
  1390.      Nodelist-/Nodediff-files.
  1391.  
  1392.           If instead of "request" the message flag "update" is used
  1393.      the program will generate a file update request. This means the
  1394.      destination system of the update request message will send the
  1395.      requested file only if the time and date stamp mark the file as
  1396.      newer than the one available on your system.
  1397.  
  1398.  
  1399.      _________________________________________________ Magic filenames
  1400.  
  1401.      These are the built-in magic filenames the program supports:
  1402.      $Anetlist, $BBSnet, $Egglist, $Fidonews, $Netlist, $Nodediff,
  1403.      $Nodelist, $Opcndiff, $Opcnlist, $Pointnet and $Signodes. If one
  1404.      of those names in encountered in the "$file..."-line the
  1405.      ghostwriter substitutes it by the actual filenames valid for the
  1406.      current date. For the date this documentation is written the
  1407.      following translation would take place:
  1408.  
  1409.           $fileD:\Out\$Nodelist --> $fileD:\Out\Nodelist.A82
  1410.           $fileD:\Out\$Anetlist --> $fileD:\Out\Anetlist.A82
  1411.           $fileD:\Out\$Fidonews --> $fileD:\Out\Fnews712.Arc
  1412.  
  1413.           See the file Sample.Cfg for more details and information
  1414.      regarding file attaches.
  1415.  
  1416.  
  1417.      _________________________________________ File compression method
  1418.  
  1419.      The keyword "#define packer [packer name]" in the #define section
  1420.      of the configuration file may be used to alter the filename
  1421.      extension the program uses to translate the built-in magic
  1422.      filenames. The default packing method currently used for the
  1423.      various nodelist and newsletter files is Arc; this is reflected
  1424.      by the letter "A" in the extension of any nodelist filename.
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.      Ghostwriter [2.1]                                         page 23
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.           #define packer may be followed by Lharc, Pak, Zip or Zoo. An
  1437.      example: if "#define packer Zip" is present, the magic filename
  1438.      $Fidonews for the current date would be computed to Fnews705.Zip;
  1439.      "#define packer Lharc" and $Nodediff would be converted to
  1440.      Nodediff.L33.
  1441.  
  1442.  
  1443.      ________________________________________ Override magic filenames
  1444.  
  1445.      The filename extensions for the various nodelist files are compu-
  1446.      ted by comparing the current date with the current day of the
  1447.      year. The most recent Friday is used to indicate for which day of
  1448.      the year the BBS listing is valid.
  1449.  
  1450.           If any new nodelist or nodediff file has to be attached on
  1451.      Thursday, the filename extension would be the Julian day number
  1452.      of the last Friday. The ghostwriter would be unable to
  1453.      automatically distribute the latest file. Use "#define magic-
  1454.      offset [n]" in the #define section of Ghost.Cfg to indicate which
  1455.      offset for the built-in magic filenames is valid on your system.
  1456.      [n] is assumed to be a single digit in the range of 1 to 4; any
  1457.      other value is ignored by the program.
  1458.  
  1459.  
  1460.      ___________________________________________ Optional kludge lines
  1461.  
  1462.      Ghostwriter optionally identifies its messages by inserting a
  1463.      kludge line as the very last line of the message. This kludge
  1464.      consists of a ^a (Ctrl-A, 0x01) character, immediately followed
  1465.      by the program's name, version number and an identification of
  1466.      the type of the node which is using the program. This either
  1467.      could be "[BinkleyTerm system]", "[FrontDoor system]" or
  1468.      "[RemoteAccess system]" depending on the type of the mailer or
  1469.      BBS configuration file the program found.
  1470.  
  1471.           If you use the program to generate file attaches a second
  1472.      klugde line will be inserted containing a 0x01 character and the
  1473.      word "attach", followed by the filename, the size in bytes and
  1474.      the date and time stamp of the file attached. This of course is
  1475.      true only if the attached file could be located on run time. See
  1476.      page #22 for more on file attaches and the paragraph on page #20
  1477.      for the -k option.
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.      Ghostwriter [2.1]                                         page 24
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.      ____________________________________________ Errorlevels returned
  1500.  
  1501.      Errorlevel 0 indicates successful program termination, errorlevel
  1502.      1 indicates matrix messages were created; errorlevel 2 indicates
  1503.      echomail messages were created. An errorlevel of 3 indicates that
  1504.      messages from or to the "purge" group were deleted during
  1505.      mailcheck. Errorlevel 4 reports troubles in creating the new
  1506.      messages (disk full, path or board number following "path" not
  1507.      existing, any other disk i/o error, important configuration files
  1508.      missing).
  1509.  
  1510.           Under no circumstances the program will stop with an annoy-
  1511.      ing "run time error xx at yyyy:zzzz. Hit any key to return to
  1512.      system". If possible, all open files will be closed by the
  1513.      program. Also, a full text error message will be written to the
  1514.      screen and the log file.
  1515.  
  1516.           There are three special errorlevels which only may occur in
  1517.      connection with the EMS/disk swapping before executing other DOS
  1518.      commands from within "Ghostwriter":
  1519.  
  1520.           253: general EMS error
  1521.           254: disk error
  1522.           255: can't reallocate memory
  1523.  
  1524.           Errorlevel 255 only occurs if a resident program was started
  1525.      by a "dos [command]" line. This of course never should be done.
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.      Ghostwriter [2.1]                                         page 25
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.      ___________________________ Credits, new releases and "Thank you"
  1563.  
  1564.      Many thanks to Felix Kasza @ 2:310/11 for his support regarding
  1565.      the structure of Fd.Sys. Thanks also to Felix for proof reading
  1566.      the program's documentation, soothing my sometimes dubious use of
  1567.      the English language and the numberless late night phone calls he
  1568.      spent discussing new features, testing the program and writing
  1569.      bug reports.
  1570.  
  1571.           Thanks to John Alton @ 1:141/250 Wilton Woods Opus for
  1572.      sending me a lot of files describing troubles John encountered in
  1573.      creating file attaches with the ghostwriter and oMMM.
  1574.  
  1575.           Thank you, Sascha Vogt @ 2:310/7 for suggesting the "update"
  1576.      flag. Thank you, Luc Schoofs @ 2:295/26, for suggesting the "co-
  1577.      sysop" feature. Thanks to Jack Decker @ 1:154/8 for requesting
  1578.      the magic filenames "Opcndiff" and "Opcnlist". Special thanks to
  1579.      Bruce Bodger @ 1:170/400 for his suggestion of the "ondate"
  1580.      option, the bug reports and the EMS/disk swapping code Bruce sent
  1581.      me.
  1582.  
  1583.           Thank you, Borland International, for powerful tools like
  1584.      Turbo Pascal 5.5 and the Turbo Debugger; thank you, Kim Kokkonen
  1585.      and TurboPower Software for creating the marvellous "ExecSwap"
  1586.      unit; thank you, Big Blue, for your reliable computers (I still
  1587.      love my IBM XT 286). Finally: raise your hats to Tom Jennings for
  1588.      inventing Fido/Fidonet, the Binkley Trio and Joaquim Homrighausen
  1589.      for creating state of the art-mailers and to all other people in
  1590.      our community who keep the good work of programming and pumping
  1591.      megabytes of echomail round the world going on.
  1592.  
  1593.           The greatest "Thank you" again is addressed to Felix Kasza,
  1594.      2:310/11, and Bruce Bodger, 1:170/400. Both are by far the very
  1595.      best beta testers I can imagine; besides this Felix is the only
  1596.      kind of "bossnode" suiting the needs of a former FidoNet region
  1597.      coordinator like me.
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.      Ghostwriter [2.1]                                         page 26
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.           The most recent version of my program is available from my
  1626.      bossnode, 2:310/11 Deep Node, HST-speed. I think Bruce Bodger's
  1627.      Truckstop BBS, 1:170/400, and John Alton's Wilton Woods Opus,
  1628.      1:141/250, support the magic filenames GHOST or GHOSTWRITER. Also
  1629.      "Ghostwriter" should be available on any SDS node.
  1630.  
  1631.           You may re-pack the ghostwriter files using the compression
  1632.      utility of your choice, but take care to use "Ghost210" as file
  1633.      name and to include the file Sample.Cfg in the package you
  1634.      distribute.
  1635.  
  1636.           Feel free to mail any comments, suggestions or questions to
  1637.      Werner Berghofer, 2:310/11.100@Fidonet. Continue to enjoy sharing
  1638.      our common hobby and do your best to enthuse "new" people for the
  1639.      powerful medium electronic mail represents.
  1640.  
  1641.  
  1642.                                                      Werner Berghofer,
  1643.                                              Vienna, April 15th, 1990.
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.      Ghostwriter [2.1]                                         page 27
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.      ___________________________________________________________ Index
  1689.  
  1690.      A                                  define statuslog 5
  1691.      Adam Hudson 2                      define trigger 13
  1692.      address 2, 3, 4                    define zonegate 16
  1693.      alternate configuration file       disk swapping 25
  1694.        20                               DOS commands 10
  1695.      Anetlist 23                        DOS version 14
  1696.      answer 8
  1697.      Arc 23                             E
  1698.      Areas.Bbs 5, 8, 21                 Egglist 23
  1699.      arguments for DOS commands 11      EMS 25
  1700.      ASCII file 2, 4, 15, 18, 21        EMS memory 10
  1701.                                         environment 2, 10
  1702.      B                                  errorlevel 11, 25
  1703.      BBSnet 23                          exit code 11
  1704.      Binkley.Cfg 2, 21
  1705.      Binkley Trio 26                    F
  1706.      BinkleyTerm 2, 24                  Fd.Sys 2, 6, 21, 26
  1707.      Borland International 26           Felix Kasza 26
  1708.      bouncelimit 7                      Fidonet address format 4
  1709.      Bruce Bodger 26                    Fidonews 23
  1710.      built-in magic filenames 23        Fidouser.Lst 3, 18
  1711.                                         file attach 22
  1712.      C                                  file request 23
  1713.      co-sysop 26                        file size 22
  1714.      comment character 4                file update request 23
  1715.      comment line 4                     first name 14
  1716.      COMSPEC 10                         FMPT 2, 4
  1717.      Config.Ra 2, 21                    Folder.Sys 6
  1718.      configuration file 4, 17, 19,      forward 8
  1719.        25                               four-dimensional 4
  1720.      ConfMail 20                        free RAM space 14
  1721.      crash 16                           free space 14
  1722.      current time 15                    FrontDoor 2, 24
  1723.  
  1724.      D                                  G
  1725.      date/time stamp 22                 Ghost.Cfg 2, 4, 16, 17, 20
  1726.      day 14                             group 3, 9, 18
  1727.      day2 11
  1728.      day3 11                            H
  1729.      day number 11                      hard return 21
  1730.      DAYNBR 11                          hold 16
  1731.      define cosysop 9
  1732.      define country 17, 18              I
  1733.      define group 18                    i/o error 25
  1734.      define magicoffset 24              INTL 2
  1735.      define messagebase 5
  1736.      define packer 24                   J
  1737.      define purge 9                     Jack Decker 26
  1738.      define QBBSpath 5                  Joaquim Homrighausen 26
  1739.      define serverpassword 12           John Alton 26
  1740.      define serveruser 12               joker 22
  1741.  
  1742.  
  1743.  
  1744.  
  1745.      Ghostwriter [2.1]                                         page 28
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.      K                                  ParseLst 3, 18
  1752.      keyword 4, 22                      pday 11
  1753.      kill 16                            percent sign 4
  1754.      Kim Kokkonen 26                    point 2, 4, 21
  1755.      kludge 24                          point address format 4
  1756.      kludge lines 20                    point number 14
  1757.      kludges 15                         Pointnet 23
  1758.                                         private 3, 16, 18
  1759.      L                                  process day 11
  1760.      Lharc 24                           purge 9
  1761.      line formatting 21
  1762.      local 16                           Q
  1763.      log 5                              Qmail 20
  1764.      log format 5                       QuickBBS message format 2
  1765.      Luc Schoofs 26
  1766.                                         R
  1767.      M                                  re-direct 5
  1768.      mailcheck 7                        RemoteAccess 2, 24
  1769.      mailer specific flags 19           report 8
  1770.      matrix address 3                   request 16, 23
  1771.      maximal message size 15            resident program 25
  1772.      memory map 10                      run time error 25
  1773.      message attribute flag 18
  1774.      message bundler 15, 16, 20         S
  1775.      message flag 3, 16                 Sascha Vogt 26
  1776.      message format 2                   SDS 27
  1777.      month 14                           semicolon 4
  1778.      monthnames 17                      server 12
  1779.      MSGID 8                            set BINKLEY 2
  1780.      multiple file attaches 22          set FD 2
  1781.                                         set RA 2
  1782.      N                                  Signodes 23
  1783.      net number 14                      special operator 15
  1784.      Netlist 23                         swap 10
  1785.      netmail 2, 3, 4                    swap file 10
  1786.      network address 18                 sysop 2, 3
  1787.      node number 14                     system 2, 3, 21
  1788.      Nodediff 23                        system crash 19
  1789.      Nodelist 23
  1790.      nodelist 2, 3                      T
  1791.      nodelist compiler 3                TEMP 10
  1792.                                         temporary batch file 11
  1793.      O                                  TMP 10
  1794.      okfile 2, 3, 22                    Tom Jennings 26
  1795.      oMMM 20, 26                        TOPT 2, 4
  1796.      ondate 6                           TosScan 20
  1797.      onday 7                            trailer lines 9
  1798.      Opcndiff 23                        trigger 13
  1799.      Opcnlist 23                        Turbo Debugger 26
  1800.      Origin file 21                     Turbo Pascal 5.5 26
  1801.                                         TurboPower Software 26
  1802.      P
  1803.      packer 23                          U
  1804.      Pak 24                             underscore 4, 20
  1805.  
  1806.  
  1807.  
  1808.      Ghostwriter [2.1]                                         page 29
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.      update 16, 23                      white space 4
  1815.                                         wildcard 6, 22
  1816.      V
  1817.      variable 14, 15                    Z
  1818.                                         Zip 24
  1819.      W                                  zone 2, 4, 14, 21
  1820.      week 11                            Zoo 24
  1821.      weekdays 17
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.      Ghostwriter [2.1]                                         page 30
  1872.